package busterminal.command.route;

import busterminal.command.AbstractCommand;
import busterminal.exception.BusinessException;
import busterminal.persistence.RouteDAO;
import busterminal.services.ServiceLocator;
import java.util.Arrays;
import java.util.List;

/**
 * Класс, реализуюий действие: удаление маршрута
 */
public class DeleteRouteCommand extends AbstractCommand {

    /**
     * Имя параметра "Идентификатор модели"
     */
    private final static String PARAM_ROUTE_ID = "Route ID";

    /**
     * Конструктор по умолчанию
     */
    public DeleteRouteCommand() {
        super("Delete route");
    }

    /**
     * Выполнить команду: удалить маршрут
     */
    @Override
    public void execute() {
        RouteDAO routeDAO = ServiceLocator.getService(RouteDAO.class);
        String parametrId = parameters.get(PARAM_ROUTE_ID);
        int ID;
        try {
            ID = Integer.parseInt(parametrId);
        } catch (Exception e) {
            throw new BusinessException("Invalid route ID='" + parametrId + "';" + e.toString(), e);
        }
        routeDAO.delete(routeDAO.read(ID));
    }

    /**
     * Получить список имён параметров
     * @return список имён параметров
     */
    @Override
    public List<String> getParametersNames() {
        return Arrays.asList(PARAM_ROUTE_ID);
    }
}
